<?PHP

// Config de Moodle, chemin à modifier en fonction du chemin d'installation de ce module
include('../../config.php');
  
$SECURITE="OK";

include('../includes/config/config.php');
include('../includes/includes.php');

$track_stic="";

// Année qui sera ajouté à la correspondance pour millésimer le système 
$annee_validite=$CONF_annee_en_cours;

///////////////////////
// Création du cours //
///////////////////////

   // Dépot de 20 mégas par défaut
	$data->MAX_FILE_SIZE=20971520;
	
	// Catégories
	$categories=explode(";", $_POST['rubrique']);
	if ($categories[1]!="neant")
  	{$categorie=$categories[1];}
  	else{$categorie=$categories[0];}
	$data->category=$categorie;

 // Nom de l'espace
	$data->fullname=$_POST['nom'];
	$data->shortname=time();
	$data->idnumber=time();
	$data->summary=$_POST['description'];
	$data->format="topics";
	
  // Nombre de section par défaut dans le cours
	$data->numsections=20;
	
	$data->startdate=time();
	$data->hiddensections=0;
	$data->newsitems=5;
	$data->showgrades=0;
	$data->showreports=0;
	$data->maxbytes=20971520;
	$data->metacourse=0;
	$data->enrol="";
	$data->defaultrole=0;
	$data->enrollable=1;
	$data->enrolstartdate=0;
	$data->enrolstartdisabled=1;
	$data->enrolenddate=0;
	$data->enrolenddisabled=1;
	$data->enrolperiod=0;
	$data->expirynotify=0;
	$data->notifystudents=0;
	$data->expirythreshold=864000;
	$data->groupmode=0;
	$data->groupmodeforce=0;
	$data->visible=1;
	$data->enrolpassword="";
	$data->guest=0;
	$data->lang="";
	$data->restrictmodules=0;
	$data->role_1="";
	$data->role_2="";
	$data->role_3="";
	$data->role_4="";
	$data->role_5="";
	$data->role_6="";
	$data->role_7="";
	$data->submitbutton="Enregistrer";
	$data->id=0;
	$data->teacher="Enseignant";
	$data->teachers="Enseignants";
	$data->student="Étudiant";
	$data->students="Étudiants";
	
  // Génération de la clé 6 caractère parmis une liste de caractère possible (voir fonction random un peu plus bas)
  $data->password=cle_random(6);
	$data->timemodified=time();
	
	
	if (!$course = moodle_create_course($data)) {
    $track_stic.="\nErreur lors de la création du cours";
  }
  else
  {
	  if ($categories[1]!="neant")
	  {
      $sql_tmp="SELECT * FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE id=".$categories[1];
  	  $query_tmp=mysql_query($sql_tmp) or die(mysql_error());
  	  $ligne_tmp=mysql_fetch_object($query_tmp);
  	  $categorie=$ligne_tmp->name;
  	  $sql_tmp="SELECT * FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE id=".$categories[0];
  	  $query_tmp=mysql_query($sql_tmp) or die(mysql_error());
  	  $ligne_tmp=mysql_fetch_object($query_tmp);
  	  $categorie=$ligne_tmp->name." / ".$categorie;
	  }
	  else
	  {
      $sql_tmp="SELECT * FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE id=".$categories[0];
  	  $query_tmp=mysql_query($sql_tmp) or die(mysql_error());
  	  $ligne_tmp=mysql_fetch_object($query_tmp);
  	  $categorie=$ligne_tmp->name;
	  }
	  
    $track_stic.="\nLe cours « ".stripslashes($data->fullname)." » (".$course->id." / ".$data->password.") a bien été créé dans la catégorie « ".$categorie." »";
    $context = get_context_instance(CONTEXT_COURSE, $course->id);
    // ensure we can use the course right after creating it
    // this means trigger a reload of accessinfo...
    mark_context_dirty($context->path);
    fix_course_sortorder();
  }
					



////////////////////////////////////
// Ajout de l'enseignant au cours //
////////////////////////////////////
					
  	$login=$_POST['login'];
  	
 		// L'utilisateur est-il déjà présent dans moodle ?
  	if (!moodle_get_complete_user_data($login))
  	{
  	   // On va créer l'utilisateur dans Moodle
  	   $ldap=ldap_recherche($CONF_ldap_champ['Login'],$login);
       $user_inscription=ldap_recup_infos($ldap[0]);
       $user_inscription['Domaine']=$CONF_domaine;
  			if (!moodle_create_user($user_inscription))
  			{
  				$track_stic.="\n Un problème est survenu lors de la création du compte sur Moodle (".$login.")";
  			}
  			else
  			{
  			 $track_stic.="\n La création du compte sur Moodle a réussi (".$login.")";
  			}
  	}
  	
  	// Ici maintenant on sait que l'utilisateur existe dans moodle
  	// On reprend sa fiche
	  $enseignant_moodle=moodle_get_complete_user_data($login);
  		
 		//On cherche le context du cours créé précédemment
     $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
  
  		 // Ajoutons le role par défaut à l'utilisateur pour ce context
  		if (role_assign($CONF_role_enseignant, $enseignant_moodle->id, 0, $coursecontext->id)) 
  		{
  			$track_stic.="\n L'enseignant a bien été inscrit au cours ($login)"; // Si ça s'est bien passé
  		} 
  		else
  		{
  			$track_stic.="\n ERREUR Pour l'inscription au cours de l'enseignant $login"; // Si ça s'est mal passé
  		}

/////////////////////////////////////////
// Mise en responsable de l'enseignant //
/////////////////////////////////////////

  $sql_ajout_responsable="INSERT INTO ".$CONF_bdd_prefixe."responsables_espaces (`id_user`,`id_course`) VALUES ($enseignant_moodle->id,$course->id)";
  if ($query_ajout_responsable=mysql_query($sql_ajout_responsable))
  {$track_stic.="\nL'enseignant a été mis en responsable de ce cours";}
  else {$track_stic.="\nERREUR pour mettre l'enseignant en responsable dans le cours : ".mysql_error(); }                                         


///////////////////////////////
// Ajout des correspondances //
///////////////////////////////

$correspondances=explode(";",$_POST['inscription']);

$inscrit['aucun']=$inscrit['code']=$inscrit['autre']=0; // Variable permettant de savoir si les inscrits sont des étudiants d'étape, d'élement, autres ou aucun
$formation=$formations=""; // Liste des étudiants inscrits automatiquement

foreach ($correspondances as $correspondance)
{
  // exemples : etp-GHDSI;etp-5M1TIS;elm-8UL001;manuel-3-6-etuSTIC
  $cor_remarques="";
  
  $correspondance=explode("-",$correspondance);
  // Correspondance de type manuel par l'administrateur (factice, etp .. domaine différent ...)
  if ($correspondance[0]=="manuel")
  {
   $cor_domaine=$correspondance[1];
   $cor_type=$correspondance[2];
   $cor_code=$correspondance[3];
   $cor_remarques=$_POST['message'];
   if ($cor_type==2 OR $cor_type==3)
   {
    $cor_code2=$cor_code." ";
    $inscrit['code']++;
    if ($cor_type==3)
    {
     $sql_tmp="SELECT * FROM ".$CONF_bdd_prefixe."aua_etape WHERE NO_ETAPE='".substr($cor_code2,4,-1)."'";
     $query_tmp=mysql_query($sql_tmp);
     $ligne_tmp=mysql_fetch_object($query_tmp);
     if (mysql_num_rows($query_tmp)==0)
     {
       $formation="Inconnue ($cor_code)";
       $formations.="\n - Inconnue ($cor_code)";
     }else{
       $formation=$ligne_tmp->L_ETAPE;
       $formations.="\n - ".$ligne_tmp->L_ETAPE;
     }     
    }
    else
    {
     $sql_tmp="SELECT * FROM ".$CONF_bdd_prefixe."aua_element WHERE NO_ELEMENT='".substr($cor_code2,4,-1)."'";
      echo $sql_tmp;
     $query_tmp=mysql_query($sql_tmp);
     $ligne_tmp=mysql_fetch_object($query_tmp);
     if (mysql_num_rows($query_tmp)==0)
     {
       $formation="Inconnue ($cor_code)";
       $formations.="\n - Inconnue ($cor_code)";
     }else{
       $formation=$ligne_tmp->L_ELEMENT;
       $formations.="\n - ".$ligne_tmp->L_ELEMENT;
     }
         
    }
    
    
   }else{$inscrit['autre']++;}
  }

  if ($correspondance[0]=="etp")
  {
   $cor_domaine=3; // univ-angers.fr
   $cor_type=3; // Type etape
   $cor_code=$annee_validite.$correspondance[1];
     $sql_tmp="SELECT * FROM ".$CONF_bdd_prefixe."aua_etape WHERE NO_ETAPE='{$correspondance[1]}'";
     $query_tmp=mysql_query($sql_tmp);
     $ligne_tmp=mysql_fetch_object($query_tmp);
     $formation=$ligne_tmp->L_ETAPE;
     $formations.="\n - ".$ligne_tmp->L_ETAPE;
   $inscrit['code']++;
  }

  if ($correspondance[0]=="elm")
  {
   $cor_domaine=3;
   $cor_type=2; // Type element
   $cor_code=$annee_validite.$correspondance[1];
   $inscrit['code']++;
     $sql_tmp="SELECT * FROM ".$CONF_bdd_prefixe."aua_element WHERE NO_ELEMENT='".$correspondance[1]."'";
     $query_tmp=mysql_query($sql_tmp);
     $ligne_tmp=mysql_fetch_object($query_tmp);
     $formation=$ligne_tmp->L_ELEMENT;
     $formations.="\n - ".$ligne_tmp->L_ELEMENT;   
  }

  if ($correspondance[0]=="aucun")
  {
   $cor_domaine=3;
   $cor_type=4; // correspondance Factice !
   $cor_code=$correspondance[1];
   $cor_remarques=$_POST['message']; // Commentaire dans le message du stic !
   $inscrit['aucun']++;;
  }
  
  $jour=substr($_POST['date'],0,2);
  $mois=substr($_POST['date'],3,2);
  $annee=substr($_POST['date'],6,4);
  $date= mktime(0, 0, 0, $mois, $jour, $annee);  
  
    // Ajoutons la correspondance pour le cours créé :
    $correspondance = new correspondances(0);
    $id_correspondance = $correspondance->id;
    $correspondance->id_type = $cor_type;
    $correspondance->code = $cor_code;
    $correspondance->id_course = $course->id;
    $correspondance->id_domaine = $cor_domaine;
    $correspondance->remarques = $cor_remarques;
    $correspondance->actif = 1;
    $correspondance->date = time();
    $correspondance->date_effective = $date;
    $correspondance->date_fin = $CONF_date_fin_unix;
    $correspondance->date_modification = time();
    $correspondance->update($id_correspondance);
    
    $cor_type_tmp=new correspondance_types($cor_type);
    $track_stic.="\n Ajout de la correspondance de type ".$cor_type_tmp->nom."({$cor_type}) pour le cours {$course->id} Ayant pour code $cor_code ($formation) à partir du $jour-$mois-$annee";
  }

/////////////////////////////////////////////
// Envoi du mail à l'enseignant et au STIC //
/////////////////////////////////////////////

     // Enseignant, destinataire du mail  
    $id = moodle_get_complete_user_data($login);

    $from = moodle_get_complete_user_data($CONF_login_admin);
    $subject = "Creation de votre espace ".$_POST['nom']." (".$course->id." / ".$data->password.")";
    $messagetext = "Bonjour,
    \nL'espace Moodle « ".stripslashes($_POST['nom'])." (".$course->id.") » que vous avez demandé est créé. Vous êtes responsable de cet espace, qui est maintenant accessible à partir de votre onglet  « scolarité » puis « cours en ligne » de l'ENT."; 
    
    if ($inscrit['aucun']>0){
      $messagetext.="\n\nAucun étudiant ne sera inscrit automatiquement à votre espace, vous devrez communiquer le numéro du cours et sa clé aux personnes concernées : ";
      $messagetext.=" N°".$course->id." / ".$data->password;
    }
    
    if ($inscrit['code']==1){
      $messagetext.="\n\nLes étudiants de la formation « ".$formation." » accèderont à votre espace à partir du ".$_POST['date'].".";
      $messagetext.="\n\nSi vous souhaitez inscrire d'autres personnes à votre espace vous pouvez leur communiquer le numéro de votre espace avec sa clé : ".$course->id." / ".$data->password; 
    }
    
    if ($inscrit['code']>1){
      $messagetext.="\n\nLes étudiants accèderont à votre espace à partir du ".$_POST['date'];
      $messagetext.=". Il s'agit des étudiants des formations :";
      $messagetext.=$formations;
      $messagetext.="\n\nSi vous souhaitez inscrire d'autres personnes à votre espace vous pouvez leur communiquer le numéro de votre espace avec sa clé : ".$course->id." / ".$data->password; 
    }
    
    $messagetext.="\n\nNous avons mis à votre disposition des documents d'aide qui vous expliquent comment utiliser votre espace Moodle. Ces documents sont regroupés dans l'espace de « Documentation ».
    \nN'hésitez pas à nous contacter pour tout complément d'information.";
    
    
    $messagetext.="\n\nA bientôt,
\nLe $CONF_nom_service
$CONF_mail_contact
$CONF_tel_contact
\n
PS : La seule contrainte pour qu'un étudiant accède à Moodle, est que son inscription administrative sur Apogée soit effectuée et valide. Leur compte informatique doit être également validé via l'ENT. Les étudiants accèdent à la plateforme Moodle à partir de l'onglet 'Mes cours' dans  l'ENT.";

    
    // Envoi du mail à l'enseignant (Sauf si on est sur le serveur de test)
    if ($CFG->wwwroot==$CONF_serveur_prod)
    {  
         //Retourne "true" si le mail est bien envoyé, "emailstop" si l'email a été bloqué par l'utilisateur et "false" pour tous les autres types d'erreur    
         $envoi = email_to_user($id, $from->email, $subject, $messagetext, $messagehtml='', $attachment='', $attachname='', $usetrueaddress=true, $replyto=$from->email, $replytoname=$from->username, $wordwrapwidth=79);
    }
    
    // Envoi d'une copie du mail à l'admin, on y ajoute le tracking
    $id_admin = moodle_get_complete_user_data($CONF_login_admin);
    $messagetext_admin="";
    if (isset($_POST['message']) AND strlen($_POST['message'])>2)
    {
    $messagetext_admin.="\n-----\nMESSAGE LAISSE PAR LE DEMANDEUR : \n\n".stripslashes($_POST['message']);
    }
    $messagetext_admin.="\n\n-----\nTRACKING\n".$track_stic."\n\n-----\nCOPIE DU MAIL ENVOYE A ".$enseignant_moodle->firstname." ".$enseignant_moodle->lastname." ($login) : \n\n".$messagetext;
    $envoi = email_to_user($id_admin, $from->email, $subject, $messagetext_admin, $messagehtml='', $attachment='', $attachname='', $usetrueaddress=true, $replyto=$from->email, $replytoname=$from->username, $wordwrapwidth=79);


/////////////////////////////
// Mise à jour du tracking //
/////////////////////////////

    // Tracking de création de cours
    $tracking = new tracking(0);   
    $id_changement_annee_tracking = $tracking->id; 
    $tracking->date = time();
    $tracking->user = $USER->username;
    $tracking->objet = "Cours";
    $tracking->action="Ajout";
    $tracking->id_objet = $course->id;
    $tracking->commentaire = addslashes($messagetext_admin);
    $tracking->update($id_changement_annee_tracking);

    // Tracking de l'initialisation du cours pour éviter que l'on demande de le réinitialiser lors du changement d'année
    $tracking2 = new tracking(0);   
    $id_tracking = $tracking2->id; 
    $tracking2->date = time();
    $tracking2->user = $USER->username;
    $tracking2->objet = "Reinitialisation";
    $tracking2->action=$annee_validite;
    $tracking2->id_objet = $course->id;
    $tracking2->commentaire = "Initialisation du cours pour l\'année universitaire ".$annee_validite."/".($annee_validite+1);
    $tracking2->update($id_tracking);


/////////////////////////////////////////////
// Affichage du résultat pour l'enseignant //
/////////////////////////////////////////////

  echo "<br />";
  echo "<p style='text-align:center;'><b>Votre espace vient d'être créé, vous pouvez y accéder dès maintenant en cliquant <a href='".$CFG->wwwroot."/course/view.php?id=".$course->id."'>ici</a></b>";
    echo "<br /><br /><i>Un message récaputilatif vous a été envoyé par mail</i>";
    echo "<br /><br /><a href='index.php?page=cours/creation_cours'>Retour vers la création d'un cours</a></p>";

  
	
?>
